#!/usr/bin/perl -w
#本脚本适用于将文件过多的目录分割成多个子目录，要求文件名以数字开始，以5个文件为单位，创建相应子目录，把把文件移进子目录。
#脚本执行时只要传入需要处理的目录即可。
my $dest = $ARGV[0]
    or die "You must provide a destination directory.";
chdir $dest or die "Cannot chdir to $dest: $!";
opendir my $dh, $dest or die "Cannot open directory: $!";
my @files = sort grep -f,readdir $dh;
while(@files){
    my @movefiles = splice(@files,0,5);
    #创建的文件夹名称为：第1个文件文件名的开始的若干数字字符+to+最后的文件的文件名的开始的若干数字字符。
    my ($first) = $movefiles[0] =~ /^(\d+)/;
    my ($last) = $movefiles[-1] =~ /^(\d+)/;
    my $dirname = "${first}to${last}";
#    print $dirname,"\n";
    mkdir $dirname,0755 or die "Cannot mkdir $dirname: $!";
    map { rename $_,"$dirname/$_"; } @movefiles;
}
